Group Predictions

Row

Win percentage for the week

Season Win Percentage

Games Correct

47

Games Picked

78

Number of predictions

132

Row

This Week’s Predictions
Game Prediction Winner Correct Correct Votes Correct Percent
1 Tampa Bay Buccaneers Atlanta Falcons No 35 0.2652
2 Minnesota Vikings Minnesota Vikings Yes 119 0.9015
3 Baltimore Ravens Baltimore Ravens Yes 121 0.9167
4 Buffalo Bills Houston Texans No 48 0.3636
5 Chicago Bears Chicago Bears Yes 112 0.8485
6 Washington Commanders Washington Commanders Yes 129 0.9773
7 Indianapolis Colts Jacksonville Jaguars No 41 0.3106
8 New England Patriots Miami Dolphins No 41 0.3106
9 San Francisco 49ers Arizona Cardinals No 9 0.0682
10 Denver Broncos Denver Broncos Yes 84 0.6364
11 Green Bay Packers Green Bay Packers Yes 107 0.8106
12 Seattle Seahawks New York Giants No 9 0.0682
13 Pittsburgh Steelers Dallas Cowboys No 43 0.3258
14 Kansas City Chiefs Kansas City Chiefs Yes 109 0.8258

Individual Predictions

row

Individual Table

Individual Results
Week 5
Name Weekly # Correct Percent Weeks Picked Season Percent Adj Season Percent Season Trend
Week 1 Week 2 Week 3 Week 4 Week 5
Steven Maisonneuve NA NA NA NA 11 0.7857 1 0.7857 0.1571
George Sweet 13 9 6 10 11 0.7857 5 0.6282 0.6282
William Schouviller 12 7 9 9 11 0.7857 5 0.6154 0.6154
Karen Richardson 10 9 7 9 11 0.7857 5 0.5897 0.5897
Keisha Vasquez 8 7 9 9 11 0.7857 5 0.5641 0.5641
Shaun Dahl 14 7 9 11 10 0.7143 5 0.6538 0.6538
Jeremy Mounce 12 8 8 NA 10 0.7143 4 0.6129 0.4903
Michael Moss 13 8 8 8 10 0.7143 5 0.6026 0.6026
Anthony Brinson 11 7 NA 9 10 0.7143 4 0.5968 0.4774
Jason Schattel 13 7 6 9 10 0.7143 5 0.5769 0.5769
Louie Renew 9 8 12 4 10 0.7143 5 0.5513 0.5513
Melissa Printup 8 9 9 6 10 0.7143 5 0.5385 0.5385
Heather Kohler 12 NA 7 12 9 0.6429 4 0.6452 0.5162
Nathan Brown 13 8 9 11 9 0.6429 5 0.6410 0.6410
Karen Coleman 13 6 NA 11 9 0.6429 4 0.6290 0.5032
Matthew Schultz 13 10 9 8 9 0.6429 5 0.6282 0.6282
Bruce Williams 13 9 10 8 9 0.6429 5 0.6282 0.6282
Ryan Cvik 10 8 9 11 9 0.6429 5 0.6026 0.6026
Keven Talbert 10 7 9 11 9 0.6429 5 0.5897 0.5897
Chester Todd 13 8 8 8 9 0.6429 5 0.5897 0.5897
Ryan Baum 14 4 9 10 9 0.6429 5 0.5897 0.5897
Michael Pacifico 13 8 7 9 9 0.6429 5 0.5897 0.5897
Darryle Sellers 11 11 6 8 9 0.6429 5 0.5769 0.5769
Antonio Mitchell 11 7 8 9 9 0.6429 5 0.5641 0.5641
Rachel Follo 15 8 6 6 9 0.6429 5 0.5641 0.5641
Earl Dixon 10 9 6 9 9 0.6429 5 0.5513 0.5513
Randy Dick 11 7 8 8 9 0.6429 5 0.5513 0.5513
David Plate 10 8 8 8 9 0.6429 5 0.5513 0.5513
Jason Miranda 10 7 8 NA 9 0.6429 4 0.5484 0.4387
Thomas Mccoy 10 7 6 8 9 0.6429 5 0.5128 0.5128
Stephen Bush 9 7 4 10 9 0.6429 5 0.5000 0.5000
Robert Lynch 6 9 8 6 9 0.6429 5 0.4872 0.4872
Robert Cunningham 14 9 10 12 8 0.5714 5 0.6795 0.6795
Chris Papageorge 14 8 10 11 8 0.5714 5 0.6538 0.6538
David Hadley 13 10 8 NA 8 0.5714 4 0.6290 0.5032
James Small 12 NA 9 10 8 0.5714 4 0.6290 0.5032
Robert Gelo 14 8 9 9 8 0.5714 5 0.6154 0.6154
Anthony Bloss 13 8 8 11 8 0.5714 5 0.6154 0.6154
Kevin Kehoe 13 7 9 10 8 0.5714 5 0.6026 0.6026
Aubrey Conn 13 7 10 9 8 0.5714 5 0.6026 0.6026
Kristen White 14 7 9 9 8 0.5714 5 0.6026 0.6026
Shawn Carden 10 9 10 10 8 0.5714 5 0.6026 0.6026
Paul Seitz 11 9 9 NA 8 0.5714 4 0.5968 0.4774
Jennifer Bouland 13 8 10 7 8 0.5714 5 0.5897 0.5897
Kenneth Nielsen 13 8 7 NA 8 0.5714 4 0.5806 0.4645
Trevor Macgavin 12 7 10 8 8 0.5714 5 0.5769 0.5769
Gregory Brown 15 7 6 9 8 0.5714 5 0.5769 0.5769
Diance Durand 9 9 12 7 8 0.5714 5 0.5769 0.5769
Philip Driskill 12 7 8 10 8 0.5714 5 0.5769 0.5769
Rafael Torres 12 9 8 7 8 0.5714 5 0.5641 0.5641
Patrick Tynan 12 8 7 9 8 0.5714 5 0.5641 0.5641
Ramar Williams 10 8 7 11 8 0.5714 5 0.5641 0.5641
Vincent Scannelli 11 7 7 11 8 0.5714 5 0.5641 0.5641
Jonathon Leslein 10 8 7 10 8 0.5714 5 0.5513 0.5513
Jamie Ainsleigh-Wong 9 8 9 9 8 0.5714 5 0.5513 0.5513
Daniel Major 8 10 11 6 8 0.5714 5 0.5513 0.5513
Lawrence Thuotte 9 5 12 NA 8 0.5714 4 0.5484 0.4387
Min Choi 10 NA 7 NA 8 0.5714 3 0.5435 0.3261
Cheryl Brown 11 6 9 8 8 0.5714 5 0.5385 0.5385
Michael Branson 9 8 8 9 8 0.5714 5 0.5385 0.5385
Darvin Graham 12 7 6 9 8 0.5714 5 0.5385 0.5385
Brian Hollmann NA NA NA 8 8 0.5714 2 0.5333 0.2133
Noah Gosswiller 8 7 NA 10 8 0.5714 4 0.5323 0.4258
George Mancini 11 8 6 NA 8 0.5714 4 0.5323 0.4258
Joseph Martin 10 7 8 8 8 0.5714 5 0.5256 0.5256
Robert Martin 7 NA 9 8 8 0.5714 4 0.5161 0.4129
Kamar Morgan 12 6 8 5 8 0.5714 5 0.5000 0.5000
Michael Moore 11 6 7 7 8 0.5714 5 0.5000 0.5000
Montee Brown 10 6 8 7 8 0.5714 5 0.5000 0.5000
Jack Wheeler 9 6 5 10 8 0.5714 5 0.4872 0.4872
Kyle May 10 8 5 6 8 0.5714 5 0.4744 0.4744
Pamela Augustine 14 9 9 NA 7 0.5000 4 0.6290 0.5032
Paul Presti 12 8 9 12 7 0.5000 5 0.6154 0.6154
Derrick Elam 13 9 8 11 7 0.5000 5 0.6154 0.6154
David Dupree 13 8 10 9 7 0.5000 5 0.6026 0.6026
Bradley Hobson 13 7 8 11 7 0.5000 5 0.5897 0.5897
Kevin Buettner 12 8 8 10 7 0.5000 5 0.5769 0.5769
Nicole Dike 13 7 8 10 7 0.5000 5 0.5769 0.5769
Jonathan Knight 13 10 9 6 7 0.5000 5 0.5769 0.5769
Erik Neumann 12 8 9 9 7 0.5000 5 0.5769 0.5769
Christopher Sims 11 9 10 8 7 0.5000 5 0.5769 0.5769
Kevin Green 11 9 NA 8 7 0.5000 4 0.5645 0.4516
Michelle Fraterrigo 11 8 9 9 7 0.5000 5 0.5641 0.5641
Daniel Baller 14 6 9 8 7 0.5000 5 0.5641 0.5641
Jared Kaanga 11 9 9 8 7 0.5000 5 0.5641 0.5641
Heather Ellenberger 13 8 7 8 7 0.5000 5 0.5513 0.5513
Daniel Halse 12 6 8 10 7 0.5000 5 0.5513 0.5513
Matthew Olguin 10 8 9 9 7 0.5000 5 0.5513 0.5513
Thomas Cho 10 6 NA 11 7 0.5000 4 0.5484 0.4387
Marcus Evans 11 8 NA 8 7 0.5000 4 0.5484 0.4387
Anthony Rockemore 13 8 6 8 7 0.5000 5 0.5385 0.5385
Richard Beeghley 11 7 6 11 7 0.5000 5 0.5385 0.5385
Bryson Scott 10 9 7 NA 7 0.5000 4 0.5323 0.4258
Jeffrey Zornes 9 11 6 8 7 0.5000 5 0.5256 0.5256
Jonathan Smith 11 NA 4 10 7 0.5000 4 0.5161 0.4129
Jennifer Arty 10 7 9 7 7 0.5000 5 0.5128 0.5128
Scott Lefton 10 8 8 7 7 0.5000 5 0.5128 0.5128
Nicholas Nguyen 11 8 5 8 7 0.5000 5 0.5000 0.5000
Desmond Jenkins 10 7 7 NA 7 0.5000 4 0.5000 0.4000
Joshua Tracey 12 5 8 6 7 0.5000 5 0.4872 0.4872
Thomas Brenstuhl 9 8 NA 6 7 0.5000 4 0.4839 0.3871
Steven Webster 7 7 9 6 7 0.5000 5 0.4615 0.4615
Richard Conkle 7 6 6 8 7 0.5000 5 0.4359 0.4359
Wayne Schofield 7 5 9 5 7 0.5000 5 0.4231 0.4231
Gary Lawrence 10 6 5 5 7 0.5000 5 0.4231 0.4231
Marc Agne 14 7 9 13 6 0.4286 5 0.6282 0.6282
Jeffrey Rudderforth 11 11 10 9 6 0.4286 5 0.6026 0.6026
Travis Delagardelle 11 12 10 8 6 0.4286 5 0.6026 0.6026
Akilah Gamble 9 NA 12 9 6 0.4286 4 0.5806 0.4645
Nicholas Cinco 12 8 NA NA 6 0.4286 3 0.5652 0.3391
Jeremy Stieler 11 9 6 11 6 0.4286 5 0.5513 0.5513
Nahir Shepard 11 8 10 8 6 0.4286 5 0.5513 0.5513
Bunnaro Sun 12 5 8 11 6 0.4286 5 0.5385 0.5385
Brandon Parks 12 6 9 9 6 0.4286 5 0.5385 0.5385
George Brown 14 7 8 7 6 0.4286 5 0.5385 0.5385
Brayant Rivera 10 8 9 8 6 0.4286 5 0.5256 0.5256
Brian Patterson 11 6 9 9 6 0.4286 5 0.5256 0.5256
Robert Sokol 10 8 NA NA 6 0.4286 3 0.5217 0.3130
Yiming Hu 12 NA 7 7 6 0.4286 4 0.5161 0.4129
Ronald Schmidt 10 10 5 9 6 0.4286 5 0.5128 0.5128
Cade Martinez 10 7 8 8 6 0.4286 5 0.5000 0.5000
Walter Archambo 8 8 7 9 6 0.4286 5 0.4872 0.4872
Ashley Johnson 9 NA 6 NA 6 0.4286 3 0.4565 0.2739
David Humes 10 9 8 11 5 0.3571 5 0.5513 0.5513
Clevante Granville 9 11 NA NA 5 0.3571 3 0.5435 0.3261
Ryan Shipley 11 6 10 8 5 0.3571 5 0.5128 0.5128
Zechariah Ziebarth 8 8 8 10 5 0.3571 5 0.5000 0.5000
Jay Kelly 10 9 7 7 5 0.3571 5 0.4872 0.4872
Edward Ford 9 7 6 10 5 0.3571 5 0.4744 0.4744
Pablo Burgosramos 9 5 8 9 5 0.3571 5 0.4615 0.4615
Jason Jackson 12 7 5 6 5 0.3571 5 0.4487 0.4487
Terry Hardison 13 8 6 7 4 0.2857 5 0.4872 0.4872
Clayton Grimes 14 NA NA NA NA 0.0000 1 0.8750 0.1750
Wallace Savage 12 NA NA NA NA 0.0000 1 0.7500 0.1500
Brian Holder 12 NA NA NA NA 0.0000 1 0.7500 0.1500
Sandra Carter 12 NA NA NA NA 0.0000 1 0.7500 0.1500
Jeremy Krammes 12 NA NA NA NA 0.0000 1 0.7500 0.1500
Terrence Lee 11 NA NA NA NA 0.0000 1 0.6875 0.1375
Daniel Gray 11 NA NA NA NA 0.0000 1 0.6875 0.1375
Wayne Gokey 13 7 NA 11 NA 0.0000 3 0.6458 0.3875
George Hall 12 NA 8 NA NA 0.0000 2 0.6250 0.2500
Michael Linder 11 9 9 NA NA 0.0000 3 0.6042 0.3625
Jeffrey Dusza 11 8 NA NA NA 0.0000 2 0.5938 0.2375
Cherylynn Vidal 13 9 8 8 NA 0.0000 4 0.5938 0.4750
Megan Fitzgerald 8 11 9 10 NA 0.0000 4 0.5938 0.4750
Randolph Tidd 11 7 8 12 NA 0.0000 4 0.5938 0.4750
Adam Konkle 10 9 NA NA NA 0.0000 2 0.5938 0.2375
Jennifer Wilson 11 9 10 6 NA 0.0000 4 0.5625 0.4500
Steward Hogans 10 7 10 NA NA 0.0000 3 0.5625 0.3375
Sheryl Claiborne-Smith 11 7 NA NA NA 0.0000 2 0.5625 0.2250
Jordan Forwood 11 8 6 11 NA 0.0000 4 0.5625 0.4500
Jose Torres Mendoza 12 8 8 8 NA 0.0000 4 0.5625 0.4500
Christopher Mulcahy 11 9 7 8 NA 0.0000 4 0.5469 0.4375
Tara Bridgett 11 8 8 8 NA 0.0000 4 0.5469 0.4375
Amy Asberry 11 8 6 10 NA 0.0000 4 0.5469 0.4375
Ashlyn Dortch 9 NA NA 8 NA 0.0000 2 0.5312 0.2125
Monte Henderson 9 8 NA NA NA 0.0000 2 0.5312 0.2125
David Kim 9 8 NA NA NA 0.0000 2 0.5312 0.2125
Zachary Brosemer 8 NA NA NA NA 0.0000 1 0.5000 0.1000
Gabriel Quinones 10 7 6 9 NA 0.0000 4 0.5000 0.4000
Antonio Chapa 8 NA NA NA NA 0.0000 1 0.5000 0.1000
Vincent Kandian 9 8 8 7 NA 0.0000 4 0.5000 0.4000
Donald Park 9 NA 6 NA NA 0.0000 2 0.4688 0.1875
Gabrieal Feiling 10 NA 5 NA NA 0.0000 2 0.4688 0.1875
Andrew Gray 5 8 9 7 NA 0.0000 4 0.4531 0.3625
Jasprin Smith 6 NA NA NA NA 0.0000 1 0.3750 0.0750
Robert Epps NA 6 NA NA NA 0.0000 1 0.3750 0.0750

Season Leaderboard

Season Leaderboard (Season Percent)
Week 5
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Clayton Grimes 0 1 0.8750 0.1750
2 Steven Maisonneuve 1 1 0.7857 0.1571
3 Brian Holder 0 1 0.7500 0.1500
3 Jeremy Krammes 0 1 0.7500 0.1500
3 Sandra Carter 0 1 0.7500 0.1500
3 Wallace Savage 0 1 0.7500 0.1500
7 Daniel Gray 0 1 0.6875 0.1375
7 Terrence Lee 0 1 0.6875 0.1375
9 Robert Cunningham 0 5 0.6795 0.6795
10 Chris Papageorge 0 5 0.6538 0.6538
10 Shaun Dahl 0 5 0.6538 0.6538
12 Wayne Gokey 0 3 0.6458 0.3875
13 Heather Kohler 0 4 0.6452 0.5162
14 Nathan Brown 0 5 0.6410 0.6410
15 David Hadley 0 4 0.6290 0.5032
15 James Small 0 4 0.6290 0.5032
15 Karen Coleman 0 4 0.6290 0.5032
15 Pamela Augustine 0 4 0.6290 0.5032
19 Bruce Williams 0 5 0.6282 0.6282
19 George Sweet 1 5 0.6282 0.6282
19 Marc Agne 1 5 0.6282 0.6282
19 Matthew Schultz 0 5 0.6282 0.6282
23 George Hall 0 2 0.6250 0.2500
24 Anthony Bloss 0 5 0.6154 0.6154
24 Derrick Elam 0 5 0.6154 0.6154
24 Paul Presti 0 5 0.6154 0.6154
24 Robert Gelo 0 5 0.6154 0.6154
24 William Schouviller 1 5 0.6154 0.6154
29 Jeremy Mounce 0 4 0.6129 0.4903
30 Michael Linder 0 3 0.6042 0.3625
31 Aubrey Conn 0 5 0.6026 0.6026
31 David Dupree 0 5 0.6026 0.6026
31 Jeffrey Rudderforth 0 5 0.6026 0.6026
31 Kevin Kehoe 0 5 0.6026 0.6026
31 Kristen White 0 5 0.6026 0.6026
31 Michael Moss 0 5 0.6026 0.6026
31 Ryan Cvik 0 5 0.6026 0.6026
31 Shawn Carden 0 5 0.6026 0.6026
31 Travis Delagardelle 1 5 0.6026 0.6026
40 Anthony Brinson 0 4 0.5968 0.4774
40 Paul Seitz 0 4 0.5968 0.4774
42 Adam Konkle 0 2 0.5938 0.2375
42 Cherylynn Vidal 0 4 0.5938 0.4750
42 Jeffrey Dusza 0 2 0.5938 0.2375
42 Megan Fitzgerald 0 4 0.5938 0.4750
42 Randolph Tidd 0 4 0.5938 0.4750
47 Bradley Hobson 0 5 0.5897 0.5897
47 Chester Todd 0 5 0.5897 0.5897
47 Jennifer Bouland 0 5 0.5897 0.5897
47 Karen Richardson 1 5 0.5897 0.5897
47 Keven Talbert 0 5 0.5897 0.5897
47 Michael Pacifico 0 5 0.5897 0.5897
47 Ryan Baum 0 5 0.5897 0.5897
54 Akilah Gamble 1 4 0.5806 0.4645
54 Kenneth Nielsen 0 4 0.5806 0.4645
56 Christopher Sims 0 5 0.5769 0.5769
56 Darryle Sellers 0 5 0.5769 0.5769
56 Diance Durand 1 5 0.5769 0.5769
56 Erik Neumann 0 5 0.5769 0.5769
56 Gregory Brown 1 5 0.5769 0.5769
56 Jason Schattel 0 5 0.5769 0.5769
56 Jonathan Knight 0 5 0.5769 0.5769
56 Kevin Buettner 0 5 0.5769 0.5769
56 Nicole Dike 0 5 0.5769 0.5769
56 Philip Driskill 0 5 0.5769 0.5769
56 Trevor Macgavin 0 5 0.5769 0.5769
67 Nicholas Cinco 0 3 0.5652 0.3391
68 Kevin Green 0 4 0.5645 0.4516
69 Antonio Mitchell 0 5 0.5641 0.5641
69 Daniel Baller 0 5 0.5641 0.5641
69 Jared Kaanga 0 5 0.5641 0.5641
69 Keisha Vasquez 1 5 0.5641 0.5641
69 Michelle Fraterrigo 0 5 0.5641 0.5641
69 Patrick Tynan 0 5 0.5641 0.5641
69 Rachel Follo 1 5 0.5641 0.5641
69 Rafael Torres 0 5 0.5641 0.5641
69 Ramar Williams 0 5 0.5641 0.5641
69 Vincent Scannelli 0 5 0.5641 0.5641
79 Jennifer Wilson 0 4 0.5625 0.4500
79 Jordan Forwood 0 4 0.5625 0.4500
79 Jose Torres Mendoza 0 4 0.5625 0.4500
79 Sheryl Claiborne-Smith 0 2 0.5625 0.2250
79 Steward Hogans 0 3 0.5625 0.3375
84 Daniel Halse 0 5 0.5513 0.5513
84 Daniel Major 0 5 0.5513 0.5513
84 David Humes 0 5 0.5513 0.5513
84 David Plate 0 5 0.5513 0.5513
84 Earl Dixon 0 5 0.5513 0.5513
84 Heather Ellenberger 0 5 0.5513 0.5513
84 Jamie Ainsleigh-Wong 0 5 0.5513 0.5513
84 Jeremy Stieler 0 5 0.5513 0.5513
84 Jonathon Leslein 0 5 0.5513 0.5513
84 Louie Renew 1 5 0.5513 0.5513
84 Matthew Olguin 0 5 0.5513 0.5513
84 Nahir Shepard 0 5 0.5513 0.5513
84 Randy Dick 0 5 0.5513 0.5513
97 Jason Miranda 0 4 0.5484 0.4387
97 Lawrence Thuotte 1 4 0.5484 0.4387
97 Marcus Evans 0 4 0.5484 0.4387
97 Thomas Cho 0 4 0.5484 0.4387
101 Amy Asberry 0 4 0.5469 0.4375
101 Christopher Mulcahy 0 4 0.5469 0.4375
101 Tara Bridgett 0 4 0.5469 0.4375
104 Clevante Granville 0 3 0.5435 0.3261
104 Min Choi 0 3 0.5435 0.3261
106 Anthony Rockemore 0 5 0.5385 0.5385
106 Brandon Parks 0 5 0.5385 0.5385
106 Bunnaro Sun 0 5 0.5385 0.5385
106 Cheryl Brown 0 5 0.5385 0.5385
106 Darvin Graham 0 5 0.5385 0.5385
106 George Brown 0 5 0.5385 0.5385
106 Melissa Printup 0 5 0.5385 0.5385
106 Michael Branson 0 5 0.5385 0.5385
106 Richard Beeghley 0 5 0.5385 0.5385
115 Brian Hollmann 0 2 0.5333 0.2133
116 Bryson Scott 0 4 0.5323 0.4258
116 George Mancini 0 4 0.5323 0.4258
116 Noah Gosswiller 0 4 0.5323 0.4258
119 Ashlyn Dortch 0 2 0.5312 0.2125
119 David Kim 0 2 0.5312 0.2125
119 Monte Henderson 0 2 0.5312 0.2125
122 Brayant Rivera 0 5 0.5256 0.5256
122 Brian Patterson 0 5 0.5256 0.5256
122 Jeffrey Zornes 0 5 0.5256 0.5256
122 Joseph Martin 0 5 0.5256 0.5256
126 Robert Sokol 0 3 0.5217 0.3130
127 Jonathan Smith 0 4 0.5161 0.4129
127 Robert Martin 0 4 0.5161 0.4129
127 Yiming Hu 0 4 0.5161 0.4129
130 Jennifer Arty 0 5 0.5128 0.5128
130 Ronald Schmidt 0 5 0.5128 0.5128
130 Ryan Shipley 0 5 0.5128 0.5128
130 Scott Lefton 0 5 0.5128 0.5128
130 Thomas Mccoy 0 5 0.5128 0.5128
135 Antonio Chapa 0 1 0.5000 0.1000
135 Cade Martinez 0 5 0.5000 0.5000
135 Desmond Jenkins 0 4 0.5000 0.4000
135 Gabriel Quinones 0 4 0.5000 0.4000
135 Kamar Morgan 0 5 0.5000 0.5000
135 Michael Moore 0 5 0.5000 0.5000
135 Montee Brown 0 5 0.5000 0.5000
135 Nicholas Nguyen 0 5 0.5000 0.5000
135 Stephen Bush 0 5 0.5000 0.5000
135 Vincent Kandian 0 4 0.5000 0.4000
135 Zachary Brosemer 0 1 0.5000 0.1000
135 Zechariah Ziebarth 0 5 0.5000 0.5000
147 Jack Wheeler 0 5 0.4872 0.4872
147 Jay Kelly 0 5 0.4872 0.4872
147 Joshua Tracey 0 5 0.4872 0.4872
147 Robert Lynch 0 5 0.4872 0.4872
147 Terry Hardison 0 5 0.4872 0.4872
147 Walter Archambo 0 5 0.4872 0.4872
153 Thomas Brenstuhl 0 4 0.4839 0.3871
154 Edward Ford 0 5 0.4744 0.4744
154 Kyle May 0 5 0.4744 0.4744
156 Donald Park 0 2 0.4688 0.1875
156 Gabrieal Feiling 0 2 0.4688 0.1875
158 Pablo Burgosramos 0 5 0.4615 0.4615
158 Steven Webster 0 5 0.4615 0.4615
160 Ashley Johnson 0 3 0.4565 0.2739
161 Andrew Gray 0 4 0.4531 0.3625
162 Jason Jackson 0 5 0.4487 0.4487
163 Richard Conkle 0 5 0.4359 0.4359
164 Gary Lawrence 0 5 0.4231 0.4231
164 Wayne Schofield 0 5 0.4231 0.4231
166 Jasprin Smith 0 1 0.3750 0.0750
166 Robert Epps 0 1 0.3750 0.0750

Adjusted Season Leaderboard

Season Leaderboard (Adjusted Season Percent)
Week 5
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Robert Cunningham 0 5 0.6795 0.6795
2 Chris Papageorge 0 5 0.6538 0.6538
2 Shaun Dahl 0 5 0.6538 0.6538
4 Nathan Brown 0 5 0.6410 0.6410
5 Bruce Williams 0 5 0.6282 0.6282
5 George Sweet 1 5 0.6282 0.6282
5 Marc Agne 1 5 0.6282 0.6282
5 Matthew Schultz 0 5 0.6282 0.6282
9 Anthony Bloss 0 5 0.6154 0.6154
9 Derrick Elam 0 5 0.6154 0.6154
9 Paul Presti 0 5 0.6154 0.6154
9 Robert Gelo 0 5 0.6154 0.6154
9 William Schouviller 1 5 0.6154 0.6154
14 Aubrey Conn 0 5 0.6026 0.6026
14 David Dupree 0 5 0.6026 0.6026
14 Jeffrey Rudderforth 0 5 0.6026 0.6026
14 Kevin Kehoe 0 5 0.6026 0.6026
14 Kristen White 0 5 0.6026 0.6026
14 Michael Moss 0 5 0.6026 0.6026
14 Ryan Cvik 0 5 0.6026 0.6026
14 Shawn Carden 0 5 0.6026 0.6026
14 Travis Delagardelle 1 5 0.6026 0.6026
23 Bradley Hobson 0 5 0.5897 0.5897
23 Chester Todd 0 5 0.5897 0.5897
23 Jennifer Bouland 0 5 0.5897 0.5897
23 Karen Richardson 1 5 0.5897 0.5897
23 Keven Talbert 0 5 0.5897 0.5897
23 Michael Pacifico 0 5 0.5897 0.5897
23 Ryan Baum 0 5 0.5897 0.5897
30 Christopher Sims 0 5 0.5769 0.5769
30 Darryle Sellers 0 5 0.5769 0.5769
30 Diance Durand 1 5 0.5769 0.5769
30 Erik Neumann 0 5 0.5769 0.5769
30 Gregory Brown 1 5 0.5769 0.5769
30 Jason Schattel 0 5 0.5769 0.5769
30 Jonathan Knight 0 5 0.5769 0.5769
30 Kevin Buettner 0 5 0.5769 0.5769
30 Nicole Dike 0 5 0.5769 0.5769
30 Philip Driskill 0 5 0.5769 0.5769
30 Trevor Macgavin 0 5 0.5769 0.5769
41 Antonio Mitchell 0 5 0.5641 0.5641
41 Daniel Baller 0 5 0.5641 0.5641
41 Jared Kaanga 0 5 0.5641 0.5641
41 Keisha Vasquez 1 5 0.5641 0.5641
41 Michelle Fraterrigo 0 5 0.5641 0.5641
41 Patrick Tynan 0 5 0.5641 0.5641
41 Rachel Follo 1 5 0.5641 0.5641
41 Rafael Torres 0 5 0.5641 0.5641
41 Ramar Williams 0 5 0.5641 0.5641
41 Vincent Scannelli 0 5 0.5641 0.5641
51 Daniel Halse 0 5 0.5513 0.5513
51 Daniel Major 0 5 0.5513 0.5513
51 David Humes 0 5 0.5513 0.5513
51 David Plate 0 5 0.5513 0.5513
51 Earl Dixon 0 5 0.5513 0.5513
51 Heather Ellenberger 0 5 0.5513 0.5513
51 Jamie Ainsleigh-Wong 0 5 0.5513 0.5513
51 Jeremy Stieler 0 5 0.5513 0.5513
51 Jonathon Leslein 0 5 0.5513 0.5513
51 Louie Renew 1 5 0.5513 0.5513
51 Matthew Olguin 0 5 0.5513 0.5513
51 Nahir Shepard 0 5 0.5513 0.5513
51 Randy Dick 0 5 0.5513 0.5513
64 Anthony Rockemore 0 5 0.5385 0.5385
64 Brandon Parks 0 5 0.5385 0.5385
64 Bunnaro Sun 0 5 0.5385 0.5385
64 Cheryl Brown 0 5 0.5385 0.5385
64 Darvin Graham 0 5 0.5385 0.5385
64 George Brown 0 5 0.5385 0.5385
64 Melissa Printup 0 5 0.5385 0.5385
64 Michael Branson 0 5 0.5385 0.5385
64 Richard Beeghley 0 5 0.5385 0.5385
73 Brayant Rivera 0 5 0.5256 0.5256
73 Brian Patterson 0 5 0.5256 0.5256
73 Jeffrey Zornes 0 5 0.5256 0.5256
73 Joseph Martin 0 5 0.5256 0.5256
77 Heather Kohler 0 4 0.6452 0.5162
78 Jennifer Arty 0 5 0.5128 0.5128
78 Ronald Schmidt 0 5 0.5128 0.5128
78 Ryan Shipley 0 5 0.5128 0.5128
78 Scott Lefton 0 5 0.5128 0.5128
78 Thomas Mccoy 0 5 0.5128 0.5128
83 David Hadley 0 4 0.6290 0.5032
83 James Small 0 4 0.6290 0.5032
83 Karen Coleman 0 4 0.6290 0.5032
83 Pamela Augustine 0 4 0.6290 0.5032
87 Cade Martinez 0 5 0.5000 0.5000
87 Kamar Morgan 0 5 0.5000 0.5000
87 Michael Moore 0 5 0.5000 0.5000
87 Montee Brown 0 5 0.5000 0.5000
87 Nicholas Nguyen 0 5 0.5000 0.5000
87 Stephen Bush 0 5 0.5000 0.5000
87 Zechariah Ziebarth 0 5 0.5000 0.5000
94 Jeremy Mounce 0 4 0.6129 0.4903
95 Jack Wheeler 0 5 0.4872 0.4872
95 Jay Kelly 0 5 0.4872 0.4872
95 Joshua Tracey 0 5 0.4872 0.4872
95 Robert Lynch 0 5 0.4872 0.4872
95 Terry Hardison 0 5 0.4872 0.4872
95 Walter Archambo 0 5 0.4872 0.4872
101 Anthony Brinson 0 4 0.5968 0.4774
101 Paul Seitz 0 4 0.5968 0.4774
103 Cherylynn Vidal 0 4 0.5938 0.4750
103 Megan Fitzgerald 0 4 0.5938 0.4750
103 Randolph Tidd 0 4 0.5938 0.4750
106 Edward Ford 0 5 0.4744 0.4744
106 Kyle May 0 5 0.4744 0.4744
108 Akilah Gamble 1 4 0.5806 0.4645
108 Kenneth Nielsen 0 4 0.5806 0.4645
110 Pablo Burgosramos 0 5 0.4615 0.4615
110 Steven Webster 0 5 0.4615 0.4615
112 Kevin Green 0 4 0.5645 0.4516
113 Jennifer Wilson 0 4 0.5625 0.4500
113 Jordan Forwood 0 4 0.5625 0.4500
113 Jose Torres Mendoza 0 4 0.5625 0.4500
116 Jason Jackson 0 5 0.4487 0.4487
117 Jason Miranda 0 4 0.5484 0.4387
117 Lawrence Thuotte 1 4 0.5484 0.4387
117 Marcus Evans 0 4 0.5484 0.4387
117 Thomas Cho 0 4 0.5484 0.4387
121 Amy Asberry 0 4 0.5469 0.4375
121 Christopher Mulcahy 0 4 0.5469 0.4375
121 Tara Bridgett 0 4 0.5469 0.4375
124 Richard Conkle 0 5 0.4359 0.4359
125 Bryson Scott 0 4 0.5323 0.4258
125 George Mancini 0 4 0.5323 0.4258
125 Noah Gosswiller 0 4 0.5323 0.4258
128 Gary Lawrence 0 5 0.4231 0.4231
128 Wayne Schofield 0 5 0.4231 0.4231
130 Jonathan Smith 0 4 0.5161 0.4129
130 Robert Martin 0 4 0.5161 0.4129
130 Yiming Hu 0 4 0.5161 0.4129
133 Desmond Jenkins 0 4 0.5000 0.4000
133 Gabriel Quinones 0 4 0.5000 0.4000
133 Vincent Kandian 0 4 0.5000 0.4000
136 Wayne Gokey 0 3 0.6458 0.3875
137 Thomas Brenstuhl 0 4 0.4839 0.3871
138 Andrew Gray 0 4 0.4531 0.3625
138 Michael Linder 0 3 0.6042 0.3625
140 Nicholas Cinco 0 3 0.5652 0.3391
141 Steward Hogans 0 3 0.5625 0.3375
142 Clevante Granville 0 3 0.5435 0.3261
142 Min Choi 0 3 0.5435 0.3261
144 Robert Sokol 0 3 0.5217 0.3130
145 Ashley Johnson 0 3 0.4565 0.2739
146 George Hall 0 2 0.6250 0.2500
147 Adam Konkle 0 2 0.5938 0.2375
147 Jeffrey Dusza 0 2 0.5938 0.2375
149 Sheryl Claiborne-Smith 0 2 0.5625 0.2250
150 Brian Hollmann 0 2 0.5333 0.2133
151 Ashlyn Dortch 0 2 0.5312 0.2125
151 David Kim 0 2 0.5312 0.2125
151 Monte Henderson 0 2 0.5312 0.2125
154 Donald Park 0 2 0.4688 0.1875
154 Gabrieal Feiling 0 2 0.4688 0.1875
156 Clayton Grimes 0 1 0.8750 0.1750
157 Steven Maisonneuve 1 1 0.7857 0.1571
158 Brian Holder 0 1 0.7500 0.1500
158 Jeremy Krammes 0 1 0.7500 0.1500
158 Sandra Carter 0 1 0.7500 0.1500
158 Wallace Savage 0 1 0.7500 0.1500
162 Daniel Gray 0 1 0.6875 0.1375
162 Terrence Lee 0 1 0.6875 0.1375
164 Antonio Chapa 0 1 0.5000 0.1000
164 Zachary Brosemer 0 1 0.5000 0.1000
166 Jasprin Smith 0 1 0.3750 0.0750
166 Robert Epps 0 1 0.3750 0.0750

Data

---
title: "2024 NFL Moneyline Picks"
output: 
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      bootswatch: spacelab
    orientation: rows
    vertical_layout: fill
    social: ["menu"]
    source_code: embed
    navbar:
      - { title: "Created by: Daniel Baller", icon: "fa-github", href: "https://github.com/danielpballer"  }
---


```{r setup, include=FALSE}
#    source_code: embed
library(flexdashboard)
library(tidyverse)
library(data.table)
library(formattable)
library(ggpubr)
library(ggrepel)
library(gt)
library(glue)
library(ggthemes)
library(hrbrthemes)
library(sparkline)
library(plotly)
library(htmlwidgets)
library(mdthemes)
library(ggtext)
library(ggnewscale)
library(DT)
source("./Functions/functions2.R")

thematic::thematic_rmd(font = "auto")

```

```{r Reading in our picks files, include=FALSE}
current_week = 5 #Set what week it is
week_1 = read_csv("./CSV_Data_Files/2024 NFL Week 1.csv") %>% 
  mutate(Name = str_to_title(Name))
week_2 = read_csv("./CSV_Data_Files/2024 NFL Week 2.csv")%>% 
  mutate(Name = str_to_title(Name))
week_3 = read_csv("./CSV_Data_Files/2024 NFL Week 3.csv")%>% 
  mutate(Name = str_to_title(Name))
week_4 = read_csv("./CSV_Data_Files/2024 NFL Week 4.csv")%>%
 mutate(Name = str_to_title(Name))
 week_5 = read_csv("./CSV_Data_Files/2024 NFL Week 5.csv")%>% 
  mutate(Name = str_to_title(Name))
# week_6 = read_csv("./CSV_Data_Files/2024 NFL Week 6.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_7 = read_csv("./CSV_Data_Files/2024 NFL Week 7.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_8 = read_csv("./CSV_Data_Files/2024 NFL Week 8.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_9 = read_csv("./CSV_Data_Files/2024 NFL Week 9.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_10 = read_csv("./CSV_Data_Files/2024 NFL Week 10.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_11 = read_csv("./CSV_Data_Files/2024 NFL Week 11.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_12 = read_csv("./CSV_Data_Files/2024 NFL Week 12.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_13 = read_csv("./CSV_Data_Files/2024 NFL Week 13.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_14 = read_csv("./CSV_Data_Files/2024 NFL Week 14.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_15 = read_csv("./CSV_Data_Files/2024 NFL Week 15.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_16 = read_csv("./CSV_Data_Files/2024 NFL Week 16.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_17 = read_csv("./CSV_Data_Files/2024 NFL Week 17.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_18 = read_csv("./CSV_Data_Files/2024 NFL Week 18.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_19 = read_csv("./CSV_Data_Files/2024 NFL Wild Card.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_20 = read_csv("./CSV_Data_Files/2024 NFL Divisional Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_21 = read_csv("./CSV_Data_Files/2024 NFL Conference Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_22 = read_csv("./CSV_Data_Files/2024 NFL Super Bowl.csv")%>% 
#  mutate(Name = str_to_title(Name))

#reading in scores
Scores = read_csv(glue::glue("./CSV_Data_Files/NFL_Scores_{current_week}.csv")) 

#reading in CBS Prediction Records
cbs = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_{current_week}.csv")) %>% 
  mutate(Percent = round(Percent,4))
cbs_season = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_Season_{current_week}.csv"))

#reading in ESPN Prediction Records
espn = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))
espn_season = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_Season_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))

#Odds not working for the 2024 season.  Need to fix scrape code for next year.
#Reading in the moneyline odds for each team and cleaning the team names
# odds_wk1 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_1.csv"))
# odds_wk2 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_2.csv"))
# odds_wk3 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_3.csv"))
# odds_wk4 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_4.csv"))
# odds_wk5 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_5.csv"))
# odds_wk6 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_6.csv"))
# odds_wk7 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_7.csv"))
# odds_wk8 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_8.csv"))
# odds_wk9 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_9.csv"))
# odds_wk10 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_10.csv"))
# odds_wk11 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_11.csv"))
# odds_wk12 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_12.csv"))
# odds_wk13 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_13.csv"))
# odds_wk14 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_14.csv"))
# odds_wk15 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_15.csv"))
# odds_wk16 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_16.csv"))
# odds_wk17 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_17.csv"))
# odds_wk18 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_18.csv"))
# odds_wk19 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_19.csv"))
# odds_wk20 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_20.csv"))
# odds_wk21 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_21.csv"))
# odds_wk22 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_22.csv"))

####################UPDATE THESE###############################
inst.picks = list(week_1, week_2, week_3, week_4, week_5) #, week_6, week_7, week_8, week_9, week_10, week_11, week_12, week_13, week_14, week_15, week_16, week_17 , week_18, week_19 , week_20, week_21, week_22) #add in the additional weeks
# odds = rbind(odds_wk1, odds_wk2, odds_wk3, odds_wk4, odds_wk5, odds_wk6, odds_wk7, odds_wk8,
#              odds_wk9, odds_wk10, odds_wk11, odds_wk12) #add in the additional weeks
####################END OF UPDATE##############################

weeks = as.list(seq(1:current_week)) #creating a list of each week number
```

```{r read in scores clean data, include=FALSE}
#Cleaning Odds Data
# cl_odds = odds_cleaning(odds)

#Cleaning scores data
Scores = cleaning2(Scores)

#creating a list of winners for each week
winners = map(weeks, weekly_winners)

#creating a vector of this weeks winners
this_week = pull(winners[[length(winners)]])  

#Getting the number of games for each week
weekly_number_of_games = map_dbl(weeks, week_number_games)
```

```{r Group Predictions, include=FALSE}
#Creating the list of everyones predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Adding who won to the predictions
with_winners = map2(pred_table, winners, adding_winners)

#Creating results for each week.
results = map2(with_winners,weekly_number_of_games, results_fn)
```


```{r Displaying Group Results, echo=FALSE}
#Displaying the group results

inst_group_table = results[[length(results)]] %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    #subtitle = md(glue("Week {length(results)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="No"
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="Yes"
    )) %>% 
  tab_options(
    data_row.padding = px(3),
    container.height = "100%"
   )
```

```{r Weekly and season Group Results, include=FALSE}
# Printing the weekly and season win percentage     

#how many games correct, incorrect, and not picked each week
weekly_group_correct = map(results, weekly_group_correct_fn)  

#how many games were picked each week
weekly_games_picked = map2(weekly_group_correct, weekly_number_of_games, weekly_games_picked_fn)

#Calculating the number of correct picks for each week
weekly_group_correct_picks = map(weekly_group_correct, weekly_group_correct_picks_fn)

# Code to manually hard code in week where we get 0 games correct
# ##### Remove this line before next season 
# weekly_group_correct_picks[[21]]=0

#Calculating weekly win percentage
weekly_win_percentage = map2(weekly_group_correct_picks, weekly_games_picked, weekly_win_percentage_fn)

#Calculating season win percentage
season_win_percentage = round(sum(unlist(weekly_group_correct_picks))/sum(unlist(weekly_games_picked)),4)

#Calculating number of games picked this season
season_games = sum(unlist(weekly_games_picked))

#calculating season wins
season_wins = sum(unlist(weekly_group_correct_picks))

#calculating the number of people who picked this week
Total = dim(inst.picks[[length(weeks)]])[1]
```

```{r plotting group results, include=FALSE}
#Previous Weeks
group_season_for_plotting = unlist(weekly_win_percentage) %>% as.data.frame() %>% 
  rename(`Win Percentage` = ".") %>% 
  add_column(Week = unlist(weeks))
```

```{r Plotting the group results, echo=FALSE}
inst_group_season_plot = group_season_for_plotting %>% 
ggplot(aes(x = as.factor(Week), y = `Win Percentage`))+
  geom_point()+
  geom_path(aes(x = Week))+
  ylim(c(0, 1)) +
  xlab("NFL Week") + 
  ylab("Correct Percentage")+
  ggtitle("Weekly Group Correct Percentage")+
  theme_classic()+
  theme(plot.title = element_text(hjust = 0.5, size = 18))
```

```{r beating cbs week, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_weekly_percent = map(weeks, cbs_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat = map2(cbs_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_total = map(cbs_weekly_percent, experts_tot)
```

```{r beating cbs season, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_season_percent = map(weeks, cbs_season_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat_season = map2(cbs_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_season_total = map(cbs_season_percent, experts_tot)
```

```{r beating ESPN week, include=FALSE}
#Creating a list of correct percentages for each week.
espn_weekly_percent = map(weeks, espn_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat = map2(espn_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_total = map(espn_weekly_percent, experts_tot)
```

```{r beating ESPN season, include=FALSE}
#Creating a list of correct percentages for each week.
espn_season_percent = map(weeks, espn_season_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat_season = map2(espn_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_season_total = map(espn_season_percent, experts_tot)
```

```{r individual results, include=FALSE}
#Creating a list of individual results for each week.
weekly_indiv = pmap(list(inst.picks, winners, weeks), indiv_weekly_pred)

#Combining each week into one dataframe and calculating percentage Correct for this week.  
full_season = weekly_indiv %>% reduce(full_join, by = "Name") %>% 
  mutate(Percent = round(pull(.[,ncol(.)]/weekly_number_of_games[[length(weekly_number_of_games)]]),4)) 

#Creating a dataframe with only the weekly picks
a = full_season %>% select(starts_with("Week"))

#Creating a vector of how many weeks each person picked over the season
tot_week = NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = ifelse(is.na(a[i,j])==T,0,1)
    tot_week[i] = sum(help)
  }
}

#Creating a vector of how many games each person picked over the season
tot_picks= NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = unlist(weekly_games_picked)[j]*ifelse(is.na(a[i,j])==T,0,1)
    tot_picks[i] = sum(help)
  }
}

#Creatign a vector of how many games each person picked correct over the season
tot_correct = NULL
help = NULL
for (i in 1:dim(a)[1]){
  tot_correct[i] = sum(a[i,], na.rm = T)
}

#adding how many weeks each person picked, season correct percentage, and adjusted season percentag to the data frame and sorting the data
indiv_disp = full_season %>% add_column(`Weeks Picked` = tot_week) %>%
  add_column(tot_correct)%>%
  add_column(tot_picks)%>%
  mutate(`Season Percent` = round(tot_correct/tot_picks,4))%>%
  mutate(`Adj Season Percent` = round(`Season Percent`*(tot_week/length(a)),4)) %>%
  select(-tot_correct, -tot_picks) %>%
  arrange(desc(Percent), desc(`Season Percent`)) %>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent))
```


```{r individual percentages, include=FALSE}
#Calculating individual percentages for each week.
weekly_indiv_percent = map2(weekly_indiv, as.list(weekly_number_of_games), indiv_percent) %>% reduce(full_join, by = "Name")

weekly_indiv_percent_plot = weekly_indiv_percent %>% 
  pivot_longer(cols = starts_with("Week"), names_to = "Week", values_to = "Percent")%>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent)) %>% 
  mutate(Week = as.factor(Week))

levels = NULL
for(i in 1:length(weeks)){
  levels[i] = glue("Week {i}")  
}

weekly_indiv_percent_plot = weekly_indiv_percent_plot %>%
  mutate(Week = factor(Week, levels))
```

```{r sparklines, include=FALSE}
#adding sparklines
plot_group = function(name, df){
  plot_object = 
    ggplot(data = df,
           aes(x = as.factor(Week), y=Percent, group = 1))+
    geom_path(size = 7)+
    scale_y_continuous(limits = c(0,1))+
    theme_void()+
    theme(legend.position = "none")
  return(plot_object)
}

sparklines = 
  weekly_indiv_percent_plot %>% 
  group_by(Name) %>% 
  nest() %>% 
  mutate(plot = map2(Name, data, plot_group)) %>% 
  select(-data)
  
indiv_disp_2 = indiv_disp %>% 
  inner_join(sparklines, by = "Name") %>% 
  mutate(`Season Trend` = NA)
```

```{r Printing Individual Table2, echo=FALSE}
# Printing the individual Table
indiv_table = indiv_disp_2 %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Individual Results"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent>.5
    )) %>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(c(plot))

indiv_winners = indiv_disp_2 %>% filter(Percent == max(Percent)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season = indiv_disp_2 %>% filter(`Season Percent` == max(`Season Percent`)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season_adj = indiv_disp_2 %>% filter(`Adj Season Percent` == max(`Adj Season Percent`)) %>% select(Name) %>% pull()%>% paste(collapse = ", ")
```

```{r Printing Season Leaderboard, echo=FALSE}
# Printing the Season Leaderboard
  
season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`) 
  
season_leaderboard = season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```

```{r Printing Adj Season Leaderboard, echo=FALSE}
# Printing the Adj Season Leaderboard
  
adj_season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Adj Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`)

adj_season_leaderboard = adj_season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Adjusted Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(adj_season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```


```{r instructor formattable, echo=FALSE}
improvement_formatter <- 
  formatter("span", 
            style = x ~ formattable::style(
              font.weight = "bold", 
              color = ifelse(x > .5, "green", ifelse(x < .5, "red", "black"))),
             x ~ icontext(ifelse(x == max(x), "star", ""), x))

indiv_disp_3 = indiv_disp_2 %>% select(-plot)
indiv_disp_3$`Season Trend` = apply(indiv_disp_3[,2:(1+length(weeks))], 1, FUN = function(x) as.character(htmltools::as.tags(sparkline(as.numeric(x), type = "line", chartRangeMin = 0, chartRangeMax = 1, fillColor = "white"))))

indiv_table_2 = as.htmlwidget(formattable(indiv_disp_3, 
                                align = c("l", rep("c", NROW(indiv_disp_3)-1)),
              list(`Season Percent` = color_bar("#FA614B"),
              `Season Percent`= improvement_formatter,
              `Adj Season Percent`= improvement_formatter)))
              
indiv_table_2$dependencies = c(indiv_table_2$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
```

```{r Plotting individual results over the season2, eval=FALSE, include=FALSE, out.width="100%"}
#Creating the individual plot.  
inst_indiv_plots = weekly_indiv_percent_plot %>% 
  ggplot(aes(x = factor(Week), y = Percent, color = Name))+
  geom_point()+
  geom_path(aes(x = as.factor(Week), y = Percent, color = Name, 
                group = Name))+
  ylim(c(0, 1)) +
  labs(x = "NFL Week", 
       y = "Correct Percentage", 
       title = "Weekly Individual Correct Percentage")+
  facet_wrap(~Name)+
  theme_classic()+
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 18),
        axis.text.x=element_text(angle =45, vjust = 1, hjust = 1))
```

```{r data for data page}
inst.data = map2(inst.picks, weeks, disp_data) %>% bind_rows()
```


```{r fivethirtyeight}
inst_538 = map(results, five38) %>% unlist() %>% sum()
```

```{r pregame, eval=FALSE, include=FALSE}
#Predictions for the week

#Creating the list of group predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Printing table of instructor predictions
pred_table[[length(pred_table)]] %>% mutate(Game = row_number()) %>% 
  rename(`Votes For` = votes_for, `Votes Against` = votes_against) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_options(
    data_row.padding = px(3)
   )
```

Group Predictions
==========================================================================

Sidebar {.sidebar} 
-------------------------------------
#### CBS Sports

<font size="4">

This week we beat or tied `r cbs_experts_beat[[length(weeks)]]` of `r cbs_experts_total[[length(weeks)]]` CBS Sports' Experts.

For the season we are currently beating or tied with `r cbs_experts_beat_season[[length(weeks)]]` of `r cbs_experts_season_total[[length(weeks)]]` CBS Sports' Experts.
 
 </font>


#### ESPN

<font size="4">

We also beat or tied `r espn_experts_beat[[length(weeks)]]` of `r espn_experts_total[[length(weeks)]]` ESPN Experts.
 
For the season we are currently beating or tied with `r espn_experts_beat_season[[length(weeks)]]` of `r espn_experts_season_total[[length(weeks)]]` ESPN Experts.

</font>

Row
--------------------------------------

### Win percentage for the week

```{r}
inst_rate <- weekly_win_percentage[[length(weekly_win_percentage)]]*100
gauge(inst_rate, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Season Win Percentage

```{r}
inst_season <- season_win_percentage*100
gauge(inst_season, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Games Correct
```{r}
valueBox(value = season_wins,icon = "fa-trophy",caption = "Correct Games this Season")
```

### Games Picked
```{r}
valueBox(value = season_games,icon = "fa-clipboard-list",caption = "Games Picked this Season")
```

### Number of predictions
```{r}
valueBox(value = Total,icon = "fa-users",caption = "Predictions this week")
```

Row
--------------------------------------

### 

```{r}
inst_group_table
```

### 

```{r}
ggplotly(inst_group_season_plot) %>% 
  layout(title = list(y = .93, xref = "plot"),
         margin = list(t = 40))
```

Individual Predictions
==========================================================================


Sidebar {.sidebar} 
-------------------------------------

#### Best Picks of the Week.

<font size="4">

 `r indiv_winners`
 
 </font>
 
#### Best Season Correct Percentage
<font size="4">

`r indiv_season`
 
 </font>

#### Best Adjusted Season Correct Percentage
<font size="4">

`r indiv_season_adj`

 * Adjusted season percentage accounts for the number of weeks picked.
 
 </font>

row {.tabset}
--------------------------------------

### Individual Table
```{r}
indiv_table
```

<!--
### Individual Table2

```{r, out.height="100%"}
indiv_table_2
```

-->

<!--

### Individual Plots
```{r, out.width="100%"}
#ggplotly(inst_indiv_plots)
```

-->

### Season Leaderboard
```{r, out.width="100%"}
season_leaderboard
```

### Adjusted Season Leaderboard
```{r, out.width="100%"}
adj_season_leaderboard
```

Data
==========================================================================

```{r}
datatable(
  inst.data, extensions = 'Buttons', options = list(
    dom = 'Blfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    lengthMenue = list( c(10, 25, 50, 100, -1), c(10, 25, 50, 100, "All") )
  )
)
```